﻿using System.Collections.Generic;
using NHibernate;
using Neturion.Dados;
using Neturion.IRepositorios;

namespace Neturion.Repositorios
{
    public class RepositorioTelaAcao : IRepositorioTelaAcao
    {
        public TelaAcao Inserir(TelaAcao telaAcao)
        {
            GerenciadorBDConfigs.Instance.SessaoAtual().Save(telaAcao);
            return telaAcao;
        }

        public TelaAcao Atualizar(TelaAcao telaAcao)
        {
            TelaAcao tmpTelaAcao = ObterPorId(telaAcao.TelaAcaoId);
            // Atribuicao dos valores do objeto da memoria para o objeto obtido no banco de dados
            tmpTelaAcao.Atualizar = telaAcao.Atualizar;
            tmpTelaAcao.Excluir = telaAcao.Excluir;
            tmpTelaAcao.Exportar = telaAcao.Exportar;
            tmpTelaAcao.Imprimir = telaAcao.Imprimir;
            tmpTelaAcao.Inserir = telaAcao.Inserir;
            tmpTelaAcao.SistemaPerfil = telaAcao.SistemaPerfil;
            tmpTelaAcao.Tela = telaAcao.Tela;
            tmpTelaAcao.Visualizar = telaAcao.Visualizar;

            GerenciadorBDConfigs.Instance.SessaoAtual().Merge(tmpTelaAcao);
            return tmpTelaAcao;
        }

        public void Excluir(TelaAcao telaAcao)
        {
            GerenciadorBDConfigs.Instance.SessaoAtual().Delete(telaAcao);
        }

        public IList<TelaAcao> ObterTodos()
        {
            ICriteria criteria = GerenciadorBDConfigs.Instance.SessaoAtual().CreateCriteria(typeof(TelaAcao));
            return criteria.List<TelaAcao>() as List<TelaAcao>;
        }

        public TelaAcao ObterPorId(int id)
        {
            return GerenciadorBDConfigs.Instance.SessaoAtual().Get<TelaAcao>(id);
        }
    }
}